home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / Projects / Tutorial Material / Zone Tutorial / Structure Examples / 6. Zoneinv < prev    next >
Lisp/Scheme  |  1998-10-26  |  3KB  |  95 lines

  1. ; Keyboard Invention #1 
  2.  
  3. (setq f1 '(a b c d))
  4. (setq f2 '(a (+2 b) c d b))
  5. (setq f3 '(a (+2 b) (+1 d)))
  6. (setq f4 '(a c (+1 d) (+1 b)))
  7. (setq f5 '(a b (-2 c) b d e))
  8. (setq f2v (gen-random-variate 0.4 0.001 0 1 '(a (+2 b) c d b)))
  9. (setq f4v (gen-random-variate 0.5 0.001 0 1 '(a c (+1 d) (+1 b))))
  10.  
  11. (setq arp1 (gen-fibonacci 5 (list f1 f2) (list f3 f4 f5)))
  12. (setq arp2 (gen-fibonacci 5 (list f1 f2v) (list f3 f4v f5)))
  13. (setq links '((ab cd a-b = -cd)))
  14.  
  15. (setq r1 '(1/16 1/16 1/16 1/16 1/16)) 
  16. (setq r2 '(1/16 1/16 1/16 1/8 1/16))
  17. (setq r3 '(1/16 1/16 1/16 1/32 1/32 1/16))
  18. (setq r4 '(1/8 1/32 1/32 1/32 1/32 1/16))
  19. (setq r5 '(-1/16 1/16 1/8 1/32 1/32 1/32 1/32))
  20. (setq r2r (reverse '(1/16 1/16 1/16 1/8 1/16)))
  21. (setq r4r (reverse '(1/8 1/32 1/32 1/32 1/32 1/16)))
  22.  
  23. (setq linkr '((1/16 1/8 1/16 -1/32 1/32 1/32 1/32)))
  24. (setq rhy1 (gen-fibonacci 5 (list r1 r2) (list r3 r4 r5)))
  25. (setq rhy2 (gen-fibonacci 5 (list r1 r2r) (list r3 r4r r5)))
  26.  
  27. (setq v1 '(96 86 76 66 56))
  28. (setq v2 '(98 88 78 68 58))
  29. (setq v3 '(100 95 85 75 65 55))
  30. (setq v4 '(95 65 70 75 80 55))
  31. (setq v5 '(0 75 85 70 67 65 62)) 
  32.  
  33. (setq linkv '((80 65 75 0 45 50 55)))
  34. (setq vel (gen-fibonacci 5 (list v1 v2) (list v3 v4 v5))) 
  35.  
  36. (setq z1 (* 10 24)) ; 5/8
  37. (setq z2 (+ 48 (* 4 24))) ; 3/8
  38. (setq z3 (* 2 (+ 12 (* 4 24)))) ; 9/16
  39. (setq z4 (* 3 (+ 48 16 (* 4 12)))) ; 7/8
  40. (setq z5 (* 4 96)) ; 4/4
  41.  
  42. (setq linkz '(480))
  43. (setq zone1 (gen-fibonacci 5 (list z1 z2) (list z3 z4 z5)))
  44. (setq zone2 (gen-fibonacci 5 (list z1 z2 z3) (list z4 z5)))
  45.  
  46. (def-symbol
  47.   kybrd (append arp1 links arp2)              
  48. )
  49.  
  50. (def-length
  51.   kybrd (append rhy1 linkr rhy2)              
  52. )
  53.  
  54. (def-velocity 
  55.   kybrd (append vel linkv vel)               
  56. )
  57.  
  58. (def-zone
  59.   kybrd (append zone1 linkz zone2)               
  60. )
  61.  
  62. (setq link (activate-tonality (f maj 7#11 1 4)))
  63. (setq tonal (activate-tonality (c min 7 1 4) (c min 9 1 4) (c min 6-9 1 4)
  64.                                (c min 7&9 1 4) (c min maj7 1 4)))
  65. (setq tonal1 (activate-tonality (c min 7 1 4) (c min 9 1 4) (c min 6-9 1 4)
  66.                                 (c min 7&9 1 4) (c min maj7 1 4) 
  67.                                 (f maj maj7 5 4)))
  68.  
  69. (def-tonality
  70.   kybrd  (append tonal tonal tonal tonal tonal tonal1 link 
  71.                  tonal tonal tonal tonal tonal tonal)
  72. )
  73.  
  74. (compile-instrument-p "ccl;output:" "zoneinv"
  75.   kybrd
  76. )
  77.  
  78. #| 
  79.  
  80. This invention demonstrates how the zone support function can be used to 
  81. structure an extended piece in ternary form. 
  82.  
  83. It's built entirely from '(a b c d) which is then varied with symbol 
  84. transposition. Each symbol pattern has a corresponding rhythm variant.
  85.  
  86. Sections A and C are developed by fibonacci generation of symbol melody,
  87. note length, dynamics and zone.
  88.  
  89. Note the use of the lisp function (list to maintain the list structure to 
  90. enable the zone support function operate. Can you think why the link section 
  91. has to be a nested list?
  92.  
  93. |#
  94.  
  95.